<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        let obj = {
            0: 12,
            1: 1,
            2: 5,
            3: 7,
            4: 2,
            length: 5
        }

        // 方法一：
        let arr = []
        // 通过apply把伪数组数据传入新数组中
        arr.push.apply(arr.obj)
        //利用数组内置方法自动排序
        arr.sort(function (a, b) {
            return a - b
        })
        console.log(arr);

        // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        // 方法二：
        //伪数组没有sort()这个方法，但是Array的原型对象有，可以通过Array.prototype来调用sort()
        // 但是此时sort()this指向的是Array.prototype，Array.prototype实际上并不需要调用sort()
        //此时可以偷梁换柱把sort()的this换成伪数组，因为sort（）是通过tihs查询是谁需要调用，然后给谁操作
        //之前是通过Array.prototype来调用，但实际上Array.prototype并不需要调用它，是obj需要调用，
        //所以把this指向改成obj就能使用sort（）这个方法了
        Array.prototype.sort.call(obj, function (a, b) {
            return a - b
        })
        console.log(obj);
    </script>
</body>

</html>